STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.3.90
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
+GNOME_MENUS_REQUIRED_VERSION=3.5.3
AC_ARG_WITH(folks,
AS_HELP_STRING([--with-folks],
$FOLKS_REQUIREMENT
libmutter >= $MUTTER_MIN_VERSION
gjs-internals-1.0 >= $GJS_MIN_VERSION
- libgnome-menu-3.0 $recorder_modules
+ libgnome-menu-3.0 >= $GNOME_MENUS_REQUIRED_VERSION
+ $recorder_modules
gdk-x11-3.0 libsoup-2.4
gl
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
GMenuTree *apps_tree;
GHashTable *running_apps;
+ GHashTable *visible_id_to_app;
GHashTable *id_to_app;
GSList *known_vendor_prefixes;
priv->id_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL,
(GDestroyNotify)g_object_unref);
+
+ /* All the objects in this hash table are owned by id_to_app */
+ priv->visible_id_to_app = g_hash_table_new (g_str_hash, g_str_equal);
+
priv->setting_id_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL,
(GDestroyNotify)g_object_unref);
- /* For now, we want to pick up Evince, Nautilus, etc. We'll
- * handle NODISPLAY semantics at a higher level or investigate them
- * case by case.
- */
+ /* We want to track NoDisplay apps, so we add INCLUDE_NODISPLAY. We'll
+ * filter NoDisplay apps out when showing them to the user. */
priv->apps_tree = gmenu_tree_new ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
g_signal_connect (priv->apps_tree, "changed", G_CALLBACK (on_apps_tree_changed_cb), self);
g_hash_table_destroy (priv->running_apps);
g_hash_table_destroy (priv->id_to_app);
+ g_hash_table_destroy (priv->visible_id_to_app);
g_hash_table_destroy (priv->setting_id_to_app);
g_slist_free_full (priv->known_vendor_prefixes, g_free);
g_assert (tree == self->priv->apps_tree);
+ g_hash_table_remove_all (self->priv->visible_id_to_app);
g_slist_free_full (self->priv->known_vendor_prefixes, g_free);
self->priv->known_vendor_prefixes = NULL;
* string is pointed to.
*/
g_hash_table_replace (self->priv->id_to_app, (char*)id, app);
+ if (!gmenu_tree_entry_get_is_nodisplay_recurse (entry))
+ g_hash_table_replace (self->priv->visible_id_to_app, (char*)id, app);
if (old_entry)
gmenu_tree_item_unref (old_entry);
shell_app_system_initial_search (ShellAppSystem *self,
GSList *terms)
{
- return search_tree (self, terms, self->priv->id_to_app);
+ return search_tree (self, terms, self->priv->visible_id_to_app);
}
/**